package cn.cs.yangtai.service.impl;

import cn.cs.yangtai.entity.Blog;
import cn.cs.yangtai.entity.Vidio;
import cn.cs.yangtai.entity.vo.PageResult;
import cn.cs.yangtai.entity.vo.VidioVo;
import cn.cs.yangtai.mapper.VidioMapper;
import cn.cs.yangtai.service.VidioService;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;

/**
 * (Vidio)表服务实现类
 *
 * @author makejava
 * @since 2024-12-12 09:21:14
 */
@Service("vidioService")
public class VidioServiceImpl implements VidioService {
    @Resource
    private VidioMapper vidioMapper;

    /**
     * 通过ID查询单条数据
     *
     * @param vId 主键
     * @return 实例对象
     */
    @Override
    public Vidio queryById(Integer vId) {
        return this.vidioMapper.queryById(vId);
    }

    @Override
    public VidioVo queryBy(Integer vId) {
        return this.vidioMapper.queryBy(vId);
    }

    /**
     * 分页查询
     *
     * @param cuttentPage 本页
     * @param pageSize    分页大小
     * @return 查询结果
     */
    @Override
    public PageResult<VidioVo> queryByPage(Integer cuttentPage, Integer pageSize) {
        PageHelper.startPage(cuttentPage,pageSize);
        Page<VidioVo> vidios =vidioMapper.queryAllByLimit(new Page<>());
        return PageResult.restPage(vidios);
    }

    /**
     * 新增数据
     *
     * @param vidio 实例对象
     * @return 实例对象
     */
    @Override
    public Vidio insert(Vidio vidio) {
        this.vidioMapper.insert(vidio);
        return vidio;
    }

    /**
     * 修改数据
     *
     * @param vidio 实例对象
     * @return 实例对象
     */
    @Override
    public VidioVo update(Vidio vidio) {
        this.vidioMapper.update(vidio);
        return this.queryBy(vidio.getVId());
    }

    /**
     * 通过主键删除数据
     *
     * @param vId 主键
     * @return 是否成功
     */
    @Override
    public boolean deleteById(Integer vId) {
        return this.vidioMapper.deleteById(vId) > 0;
    }

    /**
     * 根据标题或作者查询
     * @param titleOrAuthor
     * @return
     */
    @Override
    public PageResult<VidioVo> searchByTOrA(String titleOrAuthor) {
        PageHelper.startPage(1,10);
        Page<VidioVo> vidios = vidioMapper.queryAllByTOrA(titleOrAuthor);
        return PageResult.restPage(vidios);
    }

    /**
     * 点赞
     * @param vid
     * @return
     */
    @Override
    public VidioVo likes(Integer vid) {
        Vidio vidio = vidioMapper.queryById(vid);
        if (vidio == null) {
            // 处理未找到视频的情况
            return null;
        }
        Integer likes = vidio.getVLikes(); // 可能是 null
        if (likes == null) {
            likes = 0; // 初始化点赞数为 0
        }
        vidio.setVLikes(likes+1);
        vidioMapper.update(vidio);
        return vidioMapper.queryBy(vid);
    }
}
